<!--  -->
<template>
  <div id="app">
    <h1>{{ $store.state.counter }}</h1>
    <button @click="handleAdd">加</button>
    <button @click="handleSub">减</button>
    <button @click="handleAsyncAdd">异步加</button>
    <h1>{{ isEvenOrOdd }}</h1>
    <h1>{{localGetter }}</h1>
    <!-- <h1>{{ $store.getters.isEvenOrOdd }}</h1> -->
  </div>
</template>

<script>
//这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
//例如：import 《组件名称》 from '《组件路径》';
import { ADD, ASYNCADD, SUB } from "./mutations-types";
// 引入mapGetters辅助函数
import { mapGetters } from "vuex";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    //这里存放数据
    return {};
  },

  //监听属性 类似于data概念
  /* computed: {
    isEvenOrOdd: function () {
      // return this.$store.state.counter % 2 === 0 ? "偶数" : "奇数";
      return this.$store.getters.isEvenOrOdd;
    },
  }, */
  //辅助函数
  // computed:mapGetters(["isEvenOrOdd"]),
  //本地合并
  computed: {
    localGetter: function () {
      return "本地getter合并";
    },
    ...mapGetters(["isEvenOrOdd"]),
  },

  //监控data中的数据变化
  watch: {},
  //方法集合
  methods: {
    handleAdd: function () {
      this.$store.commit(ADD, 7);
    },
    handleSub: function () {
      this.$store.commit({
        type: SUB,
        data: {
          step: 5,
        },
      });
    },
    handleAsyncAdd: function () {
      this.$store.dispatch(ASYNCADD, 4);
    },
  },
  //生命周期 - 创建完成（可以访问当前this实例）
  created() {},
  //生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {},
  beforeCreate() {}, //生命周期 - 创建之前
  beforeMount() {}, //生命周期 - 挂载之前
  beforeUpdate() {}, //生命周期 - 更新之前
  updated() {}, //生命周期 - 更新之后
  beforeDestroy() {}, //生命周期 - 销毁之前
  destroyed() {}, //生命周期 - 销毁完成
  activated() {}, //如果页面有keep-alive缓存功能，这个函数会触发
};
</script>
<style  scoped>
</style>